package lexico;

public class EstadoNoAceptacion implements Estado{
        
        //Atributos
        private String id;
        private Transicion[] transiciones;
        private String siguienteEstado;
        private boolean inicial;
        
        //Constructora
        public EstadoNoAceptacion(String id, Transicion... transiciones){
                super();
                this.id = id;
                this.transiciones = transiciones;
                this.siguienteEstado = "e0";
                this.inicial = false;
        }

        //Mutadora
        public void setInicial(boolean inicial){
                this.inicial = inicial;
        }

        //Accesoras
       
        @Override
		public String getID() {
			// TODO Auto-generated method stub
			return id;
		}
        
        public Token getToken(String lexema){
                return null;
        }

        @Override
		public String getSigEstado() {
			// TODO Auto-generated method stub
			return siguienteEstado;
		}
        
        //Metodos
        public int transita(char siguiente){
        	boolean b=false;
        	String sig="";
                for(Transicion t: transiciones){
                        String caracteres = t.getCaracteres();
                        if(caracteres==null) {
                        	//mira si existe una transicion a null 
                        	b=true;
                        	sig=t.getSiguienteEstado();
                        }else{
                        if((caracteres.indexOf(siguiente)>-1)){
                                siguienteEstado = t.getSiguienteEstado();
                                return 1;
                        }
                        }
                }
                
                if(b){ 
                	//si ha existido una transicion null y no a entrado en cualquier otra transicion
                	//se trata de un caracter "otro" y transita con null
                	 siguienteEstado =sig;
                	 return 1;
                }
                // Caracter no reconocido - ERROR!!!
                return 0;
        }

        public boolean estadoInicial(){
                return inicial;
        }

		

		

}
